/**
 * 
 */
package com.sicocre.actions;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.sicocre.beans.Beneficiario;
import com.sicocre.beans.Cliente;
import com.sicocre.beans.Referencia;
import com.sicocre.business.service.IClienteService;
import com.sicocre.utils.Constantes;

/**
 * @author malmanza
 *
 */

@Component
@Scope("request")
public class ClienteAction implements Serializable{
	
	private static final Logger log = Logger.getLogger(ClienteAction.class);
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -3269929643009586105L;

	@Autowired
	private IClienteService clienteService;
	
	private Cliente cliente;
	
	private Beneficiario[] beneficiarios;
	
	private Referencia[] referencias;
	
	public ClienteAction(){
		this.cliente = new Cliente();
		beneficiarios=new Beneficiario[Constantes.NUM_BENEFICIARIOS];
		referencias=new Referencia[Constantes.NUM_REFERENCIAS];
		
		for(int i=0; i<Constantes.NUM_BENEFICIARIOS;i++){
			beneficiarios[i]=new Beneficiario();
		}
		
		for(int i=0; i<Constantes.NUM_REFERENCIAS;i++){
			referencias[i]=new Referencia();
		}
	}

	
	public String limpiar(){
		
		return "/pages/xhtml/altaClienteView.xhtml?faces-redirect=true";
	}
	
	public void guardar(){
		log.info("Comenzando a guardar...");
		cliente=setRegBen(cliente);
		if(clienteService.insertCliente(cliente)){
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Constantes.MSG_SUCCESS, Constantes.MSG_SUCCESS);
            FacesContext.getCurrentInstance().addMessage(null, message);
		}else{
			FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, Constantes.MSG_ERROR, Constantes.MSG_ERROR);
            FacesContext.getCurrentInstance().addMessage(null, message);
		}
	}
	
	public Cliente setRegBen(Cliente cliente){
		List<Beneficiario> bTemp=new ArrayList<Beneficiario>();
		List<Referencia> rTemp=new ArrayList<Referencia>();
		for (Referencia referencia : referencias) {
			if(!"".equals(referencia.getNombre())){
				rTemp.add(referencia);
			}
		}
		
		for (Beneficiario beneficiario : beneficiarios) {
			if(!"".equals(beneficiario.getNombre())){
				bTemp.add(beneficiario);
			}
		}
		cliente.setBeneficiarios(bTemp);
		cliente.setReferencias(rTemp);
		return cliente;
	}

	/**
	 * @return the cliente
	 */
	public Cliente getCliente() {
		return cliente;
	}

	/**
	 * @param cliente the cliente to set
	 */
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	/**
	 * @param clienteService the clienteService to set
	 */
	public void setClienteService(IClienteService clienteService) {
		this.clienteService = clienteService;
	}

	/**
	 * @return the clienteService
	 */
	public IClienteService getClienteService() {
		return clienteService;
	}

	/**
	 * @return the beneficiarios
	 */
	public Beneficiario[] getBeneficiarios() {
		return beneficiarios;
	}

	/**
	 * @param beneficiarios the beneficiarios to set
	 */
	public void setBeneficiarios(Beneficiario[] beneficiarios) {
		this.beneficiarios = beneficiarios;
	}

	/**
	 * @return the referencias
	 */
	public Referencia[] getReferencias() {
		return referencias;
	}

	/**
	 * @param referencias the referencias to set
	 */
	public void setReferencias(Referencia[] referencias) {
		this.referencias = referencias;
	}	
	
	
}
